<?php

namespace Api\Pay;

/**
 * Class BankCard
 * @package Api\Pay
 * @description 银行卡服务
 */
class Bankcard extends Base {

    const URI_BANKCARD_CHECK = 'bankcard/check'; //银行卡验证
    const URI_QUERY_UNION_BANK_ID = 'bankcard/queryunionid';  //查询联行号

    const CERT_TYPE_ID_CARD = '01';  //证件类型-身份证
    const DEFAULT_TIMEOUT = 60000;

    /**
     * 银行卡验证
     *
     * @param string $appkey 应用appkey
     * @param string $acct_no 银行卡号
     * @param string $name 姓名
     * @param string $cert_no 省份证号
     * @param string $cert_type 证件类型, 默认01-身份证
     * @param string $mobile default null 手机号码（三要素验证可不传, 四要素验证必传）
     *
     * @return bool true-校验成功 false-校验失败, 此时调用获取getErrMsg错误资讯
     */
    public function check($appkey, $acct_no, $name, $cert_no, $cert_type = self::CERT_TYPE_ID_CARD, $mobile = null) {
        $params = array(
            'acct_no' => $acct_no,
            'name' => $name,
            'cert_no' => $cert_no,
            'cert_type' => $cert_type,
        );
        if (!empty($mobile)) {
            $params['mobile'] = $mobile;
        }

        $resp_data = self::request($appkey, self::URI_BANKCARD_CHECK, $params, self::DEFAULT_TIMEOUT);
        if (!$resp_data) {
            return false;
        }

        $auth_result = $resp_data["auth_result"];
        if (!$auth_result) {
            $this->_err_msg = $resp_data["auth_msg"];
        }

        return $auth_result;
    }

    /**
     * 查询联行号
     *
     * 模糊查询机制
     *
     * @param string $appkey 应用appkey
     * @param string $bank_name 银行名称，e.g.工商银行
     * @param string $province_name 省份名称，e.g.辽宁省
     * @param string $city_name 城市名称，e.g.鞍山市
     * @param string $key_word 关键字，e.g.铁东区
     *
     * @return array 符合查询条件的联行号列表
     */
    public function queryUnionBankId($appkey, $bank_name, $province_name, $city_name, $key_word) {
        $params = array(
            "bank_name" => $bank_name,
            "province_name" => $province_name,
            "city_name" => $city_name,
            "key_word" => $key_word,
        );

        return self::request($appkey, self::URI_QUERY_UNION_BANK_ID, $params, self::DEFAULT_TIMEOUT);
    }

}